#include<bits/stdc++.h>
using namespace std;
class Solution {
public:
typedef long long ll;
    int maxSumRangeQuery(vector<int>& nums, vector<vector<int>>& requests) {
        int n=nums.size();
        vector<int> vec(n+1);
        for(auto it:requests)
        {
            vec[it[0]]++;
            vec[it[1]+1]--;
        }
        for(int i=1;i<n;i++) vec[i]+=vec[i-1];
        sort(nums.begin(),nums.end(),[](int a,int b){return a>b;});
        sort(vec.begin(),vec.end(),[](int a,int b){return a>b;});
        ll ans=0;
        for(int i=0;i<n;i++)
        { 
            ll k=(ll)nums[i]*vec[i];
            ans+=k;
            ans%=1000000007;
        }
        return ans;
    }
};